### 4.2.6 じゃんけん #### 4.2.6.1 概要 ![Img](./media/top1.png) ここでは、micro:bitの無線通信を使ってじゃんけんをしましょう。プレイヤーはボタンで手(グー、チョキ、パー)を選択し、デバイス間でデータを交換します。ゲームは3回勝負で、3回すべて引き分けまたは勝ち負け引き分けの場合、4回戦が行われます。 各結果はmicro:bitマトリックスに表示され(Wは勝ち、Lは負け、=は引き分け)、P8ピンのRGBライトで示されます(緑は勝ち、赤は負け、黄は引き分け)。1ラウンドが終了すると、両方のデバイスはすべてのデータとライトをリセットし、次の試合に備えます。 ゲームプレイは、無線インタラクションと複数ラウンドの対戦をシームレスに統合しています。 ![Img](./media/bottom1.png) #### 4.2.6.2 コンポーネント知識 ![Img](./media/2top.png) **Microbit 無線通信** ![Img](./media/6001.png) micro:bitボードは、**2.4GHz無線**と**低電力Bluetooth (BLE)**という2つの便利な無線通信機能を統合しています。ただし、これらを同時に使用することはできません。 前者はペアリングが不要で、干渉を最小限に抑えるために最大255個の独立したパケットをサポートし、通信範囲は10〜30メートルで、デジタルデータと文字列の高速伝送を可能にします。後者は主にスマートフォン、タブレット、その他のスマートデバイスとのペアリングに使用され、センサーデータアップロードやモバイルアプリのリモートコントロールなどのIoTアプリケーションに利用されます。 これらはmicro:bitの創造的な開発の可能性を広げます。 #### 4.2.6.3 必要な部品 | ![Img](./media/microbitV2.png)| ![Img](./media/shoubin.png) |![Img](./media/dianchi.png) | | :--: | :--: | :--: | | **micro:bit V2 ボード** (自己調達) ×2 | **micro:bit スマートゲームパッド** (組み立て済み) ×2 | **単4電池** (自己調達) ×8 | #### 4.2.6.4 コードフロー ![Img](./media/6002.png) #### 4.2.6.5 テストコード **完全なコード:** ![Img](./media/6003.png) ![Img](./media/line1.png) **簡単な説明:** ① 無線を初期化し、グループを「1」に設定します。ラウンド数、ステータス、対戦相手、プレイヤーのじゃんけんの結果を設定します。4つのRGBライトをP8ピンに接続し、表示を更新し、マトリックスに ![Img](./media/6004.png) を表示させます。 ![Img](./media/6005.png) ② 現在のラウンドの結果を決定します。自分の選択が相手の選択と一致する場合(**チョキ/グー/パーはそれぞれ1/2/3**)、引き分けです。そうでない場合は、勝者を選択し(チョキはパーに勝ち、パーはグーに勝ち、グーはチョキに勝つ)、ラウンド値を+1して結果を保存します。 ![Img](./media/6006.png) ③ 結果を配列に保存し、対応する文字列を表示します。これが3回目のゲームの場合、4回目のゲームが必要かどうかを判断します(すべて引き分けまたは勝ち負け引き分けの場合)。必要な場合は「FINAL」と表示し、1秒待ってからじゃんけんの選択をクリアします。 ![Img](./media/6007.png) そうでない場合は、勝利の場合は「WINNER」、敗北の場合は「LOSER」、引き分けの場合は「TIE」と表示します。3秒の遅延の後、resetGame関数を呼び出してすべてのゲーム変数をクリアします。 試合が4ゲームで構成されている場合、「GAME OVER」と表示され、3秒の遅延の後、resetGame関数を再度呼び出してすべてのゲーム変数をリセットします。 ![Img](./media/6008.png) ゲームが終了していない場合は、![Img](./media/6004.png) を表示し、両方の選択をクリアします。 ![Img](./media/6009.png) ④ Cを押すと、ボードはチョキとして「1」を送信し、マトリックスは ![Img](./media/6011.png) を表示します。Dを押すと、ボードはパーとして「3」を送信し、マトリックスは ![Img](./media/6012.png) を表示します。Eを押すと、グーとして「2」を送信し、![Img](./media/6013.png) を表示します。 ![Img](./media/6010.png) ⑤ 無線データ(相手の選択)を受信します。 ![Img](./media/6014.png) ⑥ 4回戦が必要かどうかを判断します。3回すべて引き分けまたは勝ち負け引き分けの場合、4回戦が必要です。そうでない場合は不要です。 ![Img](./media/6015.png) ⑦ RGBライトは、結果に応じて対応する色を表示します。緑は勝ち、赤は負け、黄は引き分けです。 ![Img](./media/6016.png) ⑧ ゲームが終了したら、4つのRGBライトの表示をクリアします。 ![Img](./media/6017.png) ⑨ ゲームの状態をリセットし、すべてのゲーム変数の値をクリアし、RGBライトをリセットし、![Img](./media/6004.png) を表示します。 ![Img](./media/6018.png) #### 4.2.6.6 テスト結果 ![Img](./media/4top.png) コードを書き込んだ後、micro:bitボードをゲームパッドのスロットに挿入し(**電池が取り付けられていることを確認**)、「ON」に切り替えます。 マトリックスには最初に ![Img](./media/6004.png) が表示されます。プレイヤーはボタンを押して手(Eはグー、Dはパー、Cはチョキ)を選択し、2つのデバイス間で試合データを交換します。現在のラウンドの結果を決定します。勝ちは「W」と緑色のRGBライトで示され、引き分けは「=」と黄色のライトで示され、負けは「L」と赤色のライトで示されます(最初のRGBライトは最初のラウンド後に点灯し、以降も同様です)。ゲームが終了していない場合は、次のラウンドに進みます。 ゲームは3回勝負を採用しています。3回すべて引き分けまたは勝ち負け引き分けの場合、4回戦が行われます。 3ラウンド後に勝者がいる場合、勝利の場合は「WINNER」、敗北の場合は「LOSER」と表示されます。結果が表示された後、「GAME OVER」が表示され、ゲームがリセットされます。4回戦が未決定の場合もゲームオーバーになります。 ![Img](./media/6000.gif) **ヒント:** 次のラウンドに進む前にハートアイコンが表示されるのを待ちます。ボードが応答しない場合は、micro:bitボードの背面にあるリセットボタンを押してください。 ![Img](./media/4bottom.png)